const WS_SERVER = 'http://squirteam.com/charzcode/tesis/production/squirServices/services/';
//const WS_SERVER = 'http://localhost:8080/squirServices/services/'; //WS_LOCALHOST_8080
//const WS_SERVER = 'http://localhost/squirServices/services/'; //WS_LOCALHOST_DEFAULT
const SELECCIONAR=0;
const SELECTED_VALUE_SI = "SI";
const SELECTED_VALUE_NO = "NO";
const SELECCIONAR_TEXT = "Seleccionar";
const SOLES = "S/. ";
const GUION = " - ";
const ESPACIO_VACIO = " ";
const CADENA_VACIA = "";
const MAX = 100000;
const MIN = 10000;

const MENSAJE_ERROR_ORIGEN = 'Debes seleccionar un lugar origen';
const MENSAJE_ERROR_DESTINO = 'Debes seleccionar un lugar destino';
const MENSAJE_ERROR_FECHA_VACIA = 'Debes seleccionar una fecha';
const MENSAJE_ERROR_FECHA_MENOR = 'Debes ingresar una fecha mayor';
const MENSAJE_ERROR_TERMINOS = 'Debes leer los términos y condiciones y marcarlo como leído.';
const MENSAJE_ERROR_PASAJEROS = 'Debes ingresar los datos de todos los pasajeros.';
const MENSAJE_INTRO_COMPRA =    '<strong>Compra realizada exitosamente. Debe guardar el recibo de transacción. El presente ticket debe ser canjeado por el boleto en el terminal origen a más tardar una hora antes de la fecha y hora de partida del viaje. <br/> **Este comprobante NO es válido con fines tributarios.</strong>';
const MENSAJE_INTRO_RESERVA =  '<strong>Reserva realizada exitosamente. Cuenta con ocho horas para comprar sus pasajes, sino perderá el derecho sobre los mismos. Para comprar sus pasajes reservados puede accerder a la zona: Mis reservas cuando ingresa a la aplicación.</strong>';
const MENSAJE_ERROR_USERNAME = 'Debes ingresar un usuario válido';
const MENSAJE_ERROR_PASSWORD_VACIO = 'Debes ingresar una contraseña válida';
const MENSAJE_ERROR_PASSWORD_CANTIDAD = 'La contraseña debe contener por lo menos 4 caracteres';
const MENSAJE_ERROR_LOGIN_DATA_INCORRECTA = 'El usuario o la contraseña son incorrectos';

const LIBRE = 'LIBRE';
const RESERVADO = 'RESERVADO';
const VENDIDO = 'VENDIDO';
const VACIO = 'VACIO';
const TELEVISOR = 'TELEVISOR';
const BANIO = 'BANIO';
const PRIMER_PISO = 'PRIMER PISO';
const SEGUNDO_PISO = 'SEGUNDO PISO';
const TR ='<tr>';
const TR2 ='</tr>';

const MAX_CANTIDAD_SELECCIONADOS = 8;
const ACCION_COMPRAR ='COMPRAR';
const ACCION_RESERVAR ='RESERVAR';
const PROCEDENCIA_COMPRAR = 'COMPRAR';
const PROCEDENCIA_RESERVAR = 'RESERVAR';


function validateSelect(element) {
    if ($(element).text()==SELECCIONAR_TEXT){
        return false
    } else {
        return true;
    }
}

function mostrarMensajeTemporal(id, mensaje, tiempo) {
    $(id).html(mensaje);
    $(id).fadeIn();
    $(id).fadeOut(tiempo);
}

function mostrarMensajeError(id, mensaje) {
    $(id).html(mensaje);
    $(id).show();
}

function ocultarMensajeError(id) {
    $(id).html('');
    $(id).hide();
}

function setCalendarEvent(element) {
    $( element ).datepicker({
        showOn: "button",
        buttonImage: base_url+"/media/images/calendar.png",
        buttonImageOnly: true,
        minDate: 1,
        dateFormat: "yy-mm-dd"
    });
    $( element ).datepicker( "setDate", "+1" );
}


function createSelectOption(value, text, selected) {
    if (selected==SELECTED_VALUE_SI) {
        return "<option value='"+value+"' selected>"+text+"</option>";
    } else {
        return "<option value='"+value+"'>"+text+"</option>";
    }
}

function crearDropDownSelectTerminal(data) {
    var cad="";
    var primero =true;
    cad+=createSelectOption(0, SELECCIONAR_TEXT, SELECTED_VALUE_SI);
    $.each(data, function(k,v){
        if (primero){
            cad+=createSelectOption(v.idTerminal, v.descripcion, SELECTED_VALUE_NO);
        } else {
            cad+=createSelectOption(v.idTerminal, v.descripcion, SELECTED_VALUE_NO);
        }
        primero=false;
    });
    return cad;
}

function validateFindForm(form, msjControlElement) {
    ocultarMensajeError(msjControlElement);
    var result=true;
    result =result && validateSelect(form+'_origen option:selected');
    if (!result) {
        mostrarMensajeError(msjControlElement, MENSAJE_ERROR_ORIGEN);
        return result;
    }
    result= result && validateSelect(form+'_destino option:selected');
    if (!result) {
        mostrarMensajeError(msjControlElement, MENSAJE_ERROR_DESTINO);
        return result;
    }
    return result;
}

function deshabilitarElemento(element) {
    $(element).attr('disabled', 'disabled');
}

function habilitarElemento (element) {
    $(element).removeAttr('disabled');
}

function callUrlFromJS(url_destino) {
    window.location.href=base_url+url_destino;
}

function callUrlFromJSNewTab(url_destino, target) {
    window.open(base_url+url_destino, target);
}

function createViajeText(origen, destino) {
    return (origen + GUION + destino).toUpperCase();
}

function createServicioRow(numero, hora, asientosLibres, precio1, precio2, idProgramacion) {
    var cad="<tr>";
    cad+="<td align='center' valign='middle'>"+numero+"</td>";
    cad+="<td align='center' valign='middle'>"+hora+"</td>";
    cad+="<td align='center' valign='middle'>"+asientosLibres+"</td>";
    cad+="<td align='center' valign='middle'>"+SOLES+precio1+"</td>";
    cad+="<td align='center' valign='middle'>"+SOLES+precio2+"</td>";
    cad+="<td align='center' valign='middle' class='oculto'>"+idProgramacion+"</td>";
    cad+="</tr>";
    return cad;
}

function createServicioRowOptionValue(idOption, hora, asientosLibres, precio1, precio2, idProgramacion, selected) {
    var cad="<tr>";
    if (selected){
        cad+="<td align='center' valign='middle'><input type='radio' name='optionRadio' id='rb"+idOption+"' value='"+idOption+"' checked></td>";
    } else {
        cad+="<td align='center' valign='middle'><input type='radio' name='optionRadio' id='rb"+idOption+"' value='"+idOption+"'></td>";
    }

    cad+="<td align='center' valign='middle'>"+hora+"</td>";
    cad+="<td align='center' valign='middle'>"+asientosLibres+"</td>";
    cad+="<td align='center' valign='middle'>"+SOLES+precio1+"</td>";
    cad+="<td align='center' valign='middle'>"+SOLES+precio2+"</td>";
    cad+="<td align='center' valign='middle' class='oculto'>"+idProgramacion+"</td>";
    cad+="</tr>";
    return cad;
}

function createServicioBusquedaTable(servicios, precios, conOptionValue) {
    var cad="";
    var cont= 1;
    var numRows=servicios.length;
    var primero=true;
    servicios.forEach(function(item) {
        if (conOptionValue){
            if (numRows>0 && primero){
                cad+=createServicioRowOptionValue(cont, item.horaSalida, item.asientosLibres,
                    precios[0].precio, precios[1].precio, item.idProgramacion, true);
                primero=false;
            } else {
                cad+=createServicioRowOptionValue(cont, item.horaSalida, item.asientosLibres,
                    precios[0].precio, precios[1].precio, item.idProgramacion, false);
            }
        } else {
            cad+=createServicioRow(cont, item.horaSalida, item.asientosLibres,
                precios[0].precio, precios[1].precio, item.idProgramacion);
        }
        cont++;
    });
    return cad;
}

function getServiciosFromFormAjax(form, conOptionValue){
    var method = base_url+'website/getServiciosFromFormAjax';

    var parametros = {
        'fecha': $(form+'_fecha').val(),
        'idTerminalOrigen': $(form+'_origen option:selected').val(),
        'idTerminalDestino': $(form+'_destino option:selected').val()
    };

    $.ajax({
        type: 'get',
        url: method,
        dataType: 'json',
        data: parametros,
        cache: false,
        success: function(data){
            if (data==null){
                alert('Entro null getServiciosFromFormAjax');
            } else {
                var dataTable= createServicioBusquedaTable(data.servicios, data.precios, conOptionValue);
                $('#lista_servicios').html(dataTable);
            }
            console.log(data);
        },
        error: function(jqXHR, textStatus, errorThrown){
            console.log("ERROR: Ajax Request: "+textStatus+", "+errorThrown);
        }
    });
}

function setDataFiltros(origen, destino, fecha) {
    $('#viajeText').text(createViajeText(origen, destino));
    $('#fechaText').text(fecha);
}

function setDataFiltrosSinFecha(origen, destino) {
    $('#viajeText').text(createViajeText(origen, destino));
}

function createAsientoTD(id, estado, tipoAsiento, idAsientoBD) {
    if (estado==LIBRE) {
        return "<td><div data-idAsiento='"+id+"' data-idAsientobd ='"+idAsientoBD+"' class='libre"+tipoAsiento+"'><br><span>"+id+"</span></div></td>";
    } else if (estado==RESERVADO || estado==VENDIDO) {
        return "<td><div data-idAsiento='"+id+"' data-idAsientobd ='"+idAsientoBD+"' class='vendido"+tipoAsiento+"'><br><span>"+id+"</span></div></td>";
    } else {
        return "<td><div data-idAsiento='"+id+"' data-idAsientobd ='"+idAsientoBD+"' class='libre"+tipoAsiento+"'><br><span>"+id+"</span></div></td>";
    }
}

function createEspacioTD(tipoEspacio, tipoAsiento) {
    if (tipoEspacio==VACIO) {
        return "<td class='vacio"+tipoAsiento+"'></td>";
    } else if (tipoEspacio==TELEVISOR) {
        return "<td class='vacio"+tipoAsiento+"'><img src='"+base_url+"/media/images/tv.jpg' width='35' height='31'></td>";
    } else if (tipoEspacio==BANIO){
        return "<td class='vacio"+tipoAsiento+"'><img src='"+base_url+"/media/images/toilet.png' width='35' height='31'></td>";
    }else {
        return "<td class='vacio"+tipoAsiento+"'></td>";
    }
}

function createCabeceraTD(piso) {
    if (piso==PRIMER_PISO) {
        return "<tr><th colspan='4' class='texto'>Primer Piso - Normal</th></tr>";
    } else if (piso==SEGUNDO_PISO){
        return "<tr><th colspan='4' class='texto'>Segundo Piso - 180°</th></tr>";
    } else {
        return "<tr><th colspan='4' class='texto'>Primer Piso - Normal</th></tr>";
    }
}

function switchClassAsiento(elemento, antiguo, nuevo) {
    $(elemento).removeClass(antiguo);
    $(elemento).addClass(nuevo);
}

function joinAsientos(asientos1, asientos2) {
    var asientos= new Array();
    var i =0;
    var j=0;
    for (i; i<asientos1.length; i++)
        asientos[i]=asientos1[i];
    for (j; j<asientos2.length; j++)
        asientos[i+j]=asientos2[j];
    return asientos;
}

function formatAMPM(date) {
    var hours = date.getHours();
    var minutes = date.getMinutes();
    var ampm = hours >= 12 ? 'PM' : 'AM';
    hours = hours % 12;
    hours = hours ? hours : 12; // the hour '0' should be '12'
    minutes = minutes < 10 ? '0'+minutes : minutes;
    var strTime = hours + ':' + minutes + ' ' + ampm;
    return strTime;
}

function formatDateHour(date) {
    var month = date.getMonth()+1;
    month= month<10? '0'+month : month;
    return date.getFullYear() +'-'+month + '-' + date.getDate() + ' - '+formatAMPM(date);
}

function formatDateHourString(date, hour) {
    return date + ' - '+ hour;
}

function createReservaRowOptionValue(idOption, idReserva, fecha, hora, ruta, numAsientos, monto, selected) {
    var cad="<tr>";
    if (selected){
        cad+="<td align='center' valign='middle'><input type='radio' name='optionRadio' id='rb"+idOption+"' value='"+idOption+"' checked></td>";
    } else {
        cad+="<td align='center' valign='middle'><input type='radio' name='optionRadio' id='rb"+idOption+"' value='"+idOption+"'></td>";
    }

    cad+="<td align='center' valign='middle'>"+fecha+"</td>";
    cad+="<td align='center' valign='middle'>"+hora+"</td>";
    cad+="<td align='center' valign='middle'>"+ruta+"</td>";
    cad+="<td align='center' valign='middle'>"+numAsientos+"</td>";
    cad+="<td align='center' valign='middle'>"+SOLES+monto+"</td>";
    cad+="<td align='center' valign='middle' class='oculto'>"+idReserva+"</td>";
    cad+="</tr>";
    return cad;
}

function createReservaBusquedaTable(reservas) {
    var cad="";
    var cont= 1;
    var numRows=reservas.length;
    var primero=true;
    reservas.forEach(function(item) {
        var ruta= createViajeText(item.terminalOrigen, item.terminalDestino);
        if (numRows>0 && primero){
            cad+=createReservaRowOptionValue(cont, item.idReserva, item.fecha, item.hora, ruta, item.numAsientos, item.montoPagar, true);
            primero=false;
        } else {
            cad+=createReservaRowOptionValue(cont, item.idReserva, item.fecha, item.hora, ruta, item.numAsientos, item.montoPagar, false);
        }
        cont++;
    });
    return cad;
}

function setDataPasajeros() {
    var pasajeros = JSON.parse(localStorage.pasajeros);
    var pasajerosText="";
    for (var i=0; i<pasajeros.length/3;i++) {
        pasajerosText+=pasajeros[i*3+1]+" "+pasajeros[i*3+2];
        if (i!=pasajeros.length/3-1) {
            pasajerosText+=", ";
        }
    }
    $('#pasajerosText').text(pasajerosText);
}